﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using SC.eWedding.BusinessLogic.Views;
using SC.eWedding.BusinessLogic.Handlers;
using SC.eWedding.BusinessLogic.Errores;
using Circo.Framework.BusinessLogic.Views.Filters;
using System.Text;

public partial class Usuario_Controles_veRegistro : System.Web.UI.UserControl
{
    #region Propiedades Publicas

    public string Nombre
    {
        get { return txtNombre.Text; }
        set { txtNombre.Text = value; }
    }

    public string Apellido
    {
        get { return txtApellido.Text; }
        set { txtApellido.Text = value; }
    }

    public string TipoDNI
    {
        get { return ddlTipoDocumento.SelectedValue; }
        set { ddlProvincia.SelectedValue = value.ToString(); }
    }

    public string DNI
    {
        get { return txtDNI.Text; }
        set { txtDNI.Text = value; }
    }

    public string Sexo
    {
        get { return ddlSexo.SelectedValue; }
        set { ddlSexo.Text = value; }
    }

    public string NombreUsuario
    {
        get { return txtNombreUsuario.Text; }
        set { txtNombreUsuario.Text = value; }
    }

    public string Contrasenia
    {
        get { return txtContrasenia.Text; }
        set { txtContrasenia.Text = value; }
    }

    public int Localidad
    {
        get { return int.Parse(ddlLocalidad.SelectedValue); }
        set { ddlLocalidad.SelectedValue = value.ToString(); }
    }

    public int Provincia
    {
        get { return int.Parse(ddlProvincia.SelectedValue); }
        set { ddlProvincia.SelectedValue = value.ToString(); }
    }

    public string Direccion
    {
        get { return txtDireccion.Text; }
        set { txtDireccion.Text = value; }
    }

    public string Mail
    {
        get { return txtMail.Text; }
        set { txtMail.Text = value; }
    }

    #endregion

    #region Propiedades Privadas

    private ProveedorView Proveedor
    {
        //get{return (ProveedorView)Session["ProveedorView"];}
        set { Session["ProveedorView"] = value; }
    }

    #endregion

    #region Metodos Publicos

    public void HabilitarControles()
    {
        ddlLocalidad.Enabled = Provincia != -1;
    }

    public bool RegistrarUsuario()
    {   
        ErrorRegistroUsuario errorCode;
        UsuarioView usuario = UsuarioView.NuevoUsuario(Nombre, Apellido, NombreUsuario, Contrasenia, Mail, Direccion, (UsuarioView.TiposDNI)Enum.Parse(typeof(UsuarioView.TiposDNI), TipoDNI, true), DNI, (UsuarioView.TipoSexo)Enum.Parse(typeof(UsuarioView.TipoSexo), Sexo, true), Provincia, Localidad, out errorCode);
        string mensaje;

        if (usuario == null)
            mensaje = errorCode.ToString("f");
        else
            mensaje = "Usuario creado satisfactoriamente";

        
        if (!Page.ClientScript.IsStartupScriptRegistered("script_Error"))
        {
            StringBuilder script = new StringBuilder();
            script.Append("   alert('" + mensaje + "');\n");

            ScriptManager.RegisterStartupScript(this, this.GetType(), "script_Error", script.ToString(), true);
        }
        return false;

    }

    public void CargarCombos()
    {
        CargarComboProvincia();
        CargarComboLocalidad();
    }

    #endregion

    #region Metodos Privados

    private void CargarComboProvincia()
    {
        List<ProvinciaView> provincias = new List<ProvinciaView>();

        ProvinciaView tipoSel = new ProvinciaView();
        tipoSel.Id = -1;
        tipoSel.Nombre = "<Seleccionar>";

        provincias.Add(tipoSel);
        provincias.AddRange(ProvinciaHandler.FindAll());

        ddlProvincia.DataSource = provincias;
        ddlProvincia.DataBind();

    }

    private void CargarComboLocalidad()
    {
        List<LocalidadView> localidades = new List<LocalidadView>();

        LocalidadView tipoSel = new LocalidadView();
        tipoSel.Id = -1;
        tipoSel.Nombre = "<Seleccionar>";
        localidades.Add(tipoSel);

        if (Provincia != -1)
        {
            List<ViewFilter> filtros = new List<ViewFilter>();

            filtros.Add(new ViewCommonFilter("Provincia", Provincia));

            localidades.AddRange(LocalidadHandler.FindBy(filtros));
        }
        ddlLocalidad.DataSource = localidades;
        ddlLocalidad.DataBind();
    }

    #endregion

    #region Eventos

    protected void Page_Load(object sender, EventArgs e)
    {
        //LE (Libreta de Enrolamiento) – LC (Libreta Cívica) – DN I - Doc. Extranjero
    }

    protected void ddlProvincia_SelectedIndexChanged(object sender, EventArgs e)
    {
        CargarComboLocalidad();
    }

    #endregion   
}
